package Java道题;
public class 整数划分并打印{
	//
	

	static int[] mark=new int[10];
	static int n=10;

	static void Divid(int now,int k,int prio)
	 {
	    //now记录当前长度，k记录深度，prio记录前一个的值。
	    int i;
	    if(now > n) return;  //不合适，返回。
	    if(now == n)
	    {
	        for(i = 0; i < k-1; i++)
	          System.out.print(mark[i]+"+");
	        System.out.println(mark[i]);
	    }
	    else
	    {
	        for(i = prio; i > 0; i--)
	        {
	            if(i <= prio)  //必须必前一个要小
	            {
	                mark[k]=i;
	                now+=i;
	                Divid(now,k+1,i);
	                now-=i;
	            }
	        }
	    }
	 }

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(n);
		Divid(0, 0, n-1);
	}

}
